package com.sline.test;

import java.io.File;
import java.util.Scanner;

public class DirectorySize {
    /*
    * 从键盘接收一个文件夹路径, 统计该文件夹大小*/
    public static void main(String[] args) {
        File dir = getFile();
        long size = getDirSize(dir);

        System.out.println(size);
    }

    // 获取键盘输入的文件夹路径
    public static File getFile() {
        Scanner sc = new Scanner(System.in);
        File dir;
        while (true) {
            String dirStr = sc.nextLine();
            dir = new File(dirStr);

            if (!dir.exists()) {
                System.out.println("您输入的路径不存在, 请重新输入文件夹路径~");
            } else if (dir.isFile()) {
                System.out.println("您输入的是一个文件路径, 请重新输入文件夹路径");
            } else if (dir.isDirectory()) {
                return dir;
            } else {
                System.out.println("未知错误~");
            }
        }
    }

    // 获取文件夹的大小
    public static long getDirSize(File dir) {
        long size = 0;

        File[] subFiles = dir.listFiles();

        for (File subFile: subFiles) {
            if (subFile.isFile()) {
                size = size + subFile.length();
            } else if (subFile.isDirectory()) {
                size = size + getDirSize(subFile);
            }
        }

        return size;
    }

    // 拷贝目标文件夹下面的所有文件
}
